// 链式调用场景: 对异步请求返回的代码做多层处理
new Promise((reslove,reject)=>{
    setTimeout(() => {
        reslove('aaa')
    }, 500);
}).then(res1=>{
    // 假定自己在这里对第一次服务器发送的请求处理了一段代码（省略1000行代码）
    res2 = res1 +111;
    return new Promise((reslove,reject)=>{
        reslove(res2)
    }).then(result2=>{
        // 假定在这里对结果进行第二次处理（省略1000行代码）
        res3 =res2 +222
        return new Promise((reslove,reject)=>{
            reslove(res3)
        }).then(res3=>{
            console.log(res3);
        })
    })
})

// 简写方法一：
new Promise((reslove,reject)=>{
    setTimeout(() => {
        reslove('aaa')
    }, 500);
}).then(res1=>{
   res2 = res1 +111;
    // 直接返回Prmoise.reslove(参数)这个方法就可以了 reject是个可选的参数
    return Promise.resolve(res2).then(result2=>{
        res3 =res2 +222
        return Promise.resolve(res3).then(res3=>{
            console.log(res3);
        })
    })
})

// 更加简洁的写法:
new Promise((reslove,reject)=>{
    setTimeout(() => {
        reslove('aaa');
    }, 500);
}).then(res1=>{
    // 直接return 这里其实是会把返回值封装在一个promise对象里面
    return res1+'111'
}).then(res2=>{
    return res2+'222'
}).then(res3=>{
    console.log(res3);
})

// 简写怎么处理服务器拒绝的请求？
new Promise((reslove,reject)=>{
    setTimeout(() => {
        reslove('aa')
    }, 550);
}).then(res=>{
    res2 =res+111;
    // 就不用new promise 再调用reject()方法了
    // return Promise.reject('处理失败')

    throw '处理失败'
}).catch(err=>{
    console.log(err);
})